package com.easylinkin.linkappapi.lobar.mapper;

import cn.hutool.core.date.DateTime;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.easylinkin.linkappapi.lobar.dto.UserClockDTO;
import com.easylinkin.linkappapi.lobar.dto.UserStatisticsDTO;
import com.easylinkin.linkappapi.lobar.dto.screen.LobarScreenDTO;
import com.easylinkin.linkappapi.lobar.entity.UserStatistics;
import com.easylinkin.linkappapi.lobar.entity.vo.UserStatisticsVo;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * <p>
 * 用户考勤统计表 Mapper 接口
 * </p>
 *
 * @author kanyuanfeng
 * @since 2022-04-24
 */
public interface UserStatisticsMapper extends BaseMapper<UserStatistics> {

  /**
   * @Description: 根据条件，分页(不分页)查询考勤统计
   * @author kan yuanfeng
   * @date 2020/11/04 11:42
   */
  IPage<UserStatistics> queryStatistics(Page page, @Param("clockDTO") UserClockDTO clockDTO);

  List<LobarScreenDTO> selectPart(@Param("userStatisticsDTO") UserStatisticsDTO userStatisticsDTO);

  //平均工时
  double averageHour(@Param("userStatisticsDTO") UserStatisticsDTO userStatisticsDTO);

  //查询参建单位人均
  List<LobarScreenDTO> companyHour(String tenantId);

  List<UserStatistics> findSevenAttendance(String tenantId);

  List<UserStatisticsVo> staticAttendance(@Param("tenantId") String tenantId, @Param("startTime") Date startTime, @Param("endTime") Date endTime);

  /**
   * 查询最新一次的统计时间
   * @param tenantId
   * @return
   */
  Date selectMaxTime(String tenantId);

  /**
   * 项目报告月份平均每天在场人数
   */
  Integer findNumByReportId(Integer reportId);

  Integer getUserNumByTime(@Param("tenantId") String tenantId, @Param("time") Date time);
}
